/**
 * @Date        : 2022/3/20
 * @Author      : sunxiangke(sunxiangke@baidu.com)
 * @Description :
 */

package main

import "fmt"

/**
给定一个n个元素有序的（升序）整型数组nums 和一个目标值target ，写一个函数搜索nums中的 target，如果目标值存在返回下标，否则返回 -1。


https://leetcode-cn.com/problems/binary-search/
*/

func main() {
	fmt.Println(search([]int{-1, 0, 3, 5, 9, 12}, 9))
}

func search(nums []int, target int) int {
	left, right := 0, len(nums)-1
	for left <= right {
		m := left + (right-left)/2
		if nums[m] == target {
			return m
		} else if target > nums[m] {
			left = m + 1
		} else {
			right = m - 1
		}
	}

	return -1
}
